// 泛型可解决 类  接口 方法 的复用性，以及对不特定数据类型的支持

// 可以支持不特定的数据类型  要求：传入的参数和返回的参数一致

// T 表示泛型

// function getValue<T>(value:T):T{
//   return value
// }

// getValue<number>(12)

// 泛型类

class MinClass {
  public list: number[] = [];

  add(arr: number[]) {
    arr.forEach((v) => this.list.push(v));
  }

  min(): number {
    let minNUm = this.list[0];
    for (let index = 0; index < this.list.length; index++) {
      if (minNUm > this.list[index]) {
        minNUm = this.list[index];
      }
    }
    return minNUm;
  }

  // sort(): number[] {
  //   let newArr: number[] = JSON.parse(JSON.stringify(this.list));
  //   newArr.sort((a, b) => {
  //     return a - b;
  //   });
  //   return newArr;
  // }

  // sort(): number[] {
  //   let newArr: number[] = JSON.parse(JSON.stringify(this.list));
  //   let temp:number=0
  //   for (let i = 0; i < newArr.length-1; i++) {
  //     for (let j = 0; j < newArr.length-1; j++) {
  //        if(newArr[j]>newArr[j+1]){
  //          temp = newArr[j]
  //          newArr[j] = newArr[j+1]
  //          newArr[j+1] = temp
  //        }
  //     }
  //   }
  //   return newArr;
  // }

  sort(): number[] {
    let newArr: number[] = JSON.parse(JSON.stringify(this.list));
    let temp: number = 0;
    for (let i = 0; i < newArr.length - 1; i++) {
      for (let j = i + 1; j < newArr.length; j++) {
        if (newArr[i] > newArr[j]) {
          temp = newArr[i];
          newArr[i] = newArr[j];
          newArr[j] = temp;
        }
      }
    }
    return newArr;
  }
}

const m = new MinClass()

const arr = [12,42,53,64,16,8,2,5]

m.add(arr)

console.log(m.min())

console.log(m.sort())
